package calculate;

public class QuickSort {
	public static void main(String args[]) {
		int is[] = new int[] { 37, 47, 23, 100, 19, 56, 56, 99, 9 }; // 实例化数组
		sort(is, 0, is.length);
		for (int i : is) {
			System.out.println(i);
		}
	}

	public static void swap(int a[], int i, int j) { // 通过临时变量,交换数据
		int tmp = a[i];
		a[i] = a[j];
		a[j] = tmp;
	}

	private static void sort(int[] data, int left, int right) {
		int i = left;
		int j = right;
		int middle = data[left]; // 第一次调用时候我选取要排序的数组的第一个数作为关键数据
		while (true) {
			while (++i < right - 1 && data[i] < middle)
				;
			while (--j > left && data[j] > middle)
				;
			if (i >= j) {
				break;
			}
			swap(data, i, j);
		}
		data[left] = data[j];
		data[j] = middle;

		if (left < j) {
			sort(data, left, j);
		}
		if (i < right) {
			sort(data, i, right);
		}
	}

}
